﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.Remoting;
using System.IO;
using System.Net;
using System.Collections;

namespace Client.Remoting
{
    public class Cliente
    {
        RemotableType remoteObject;

        public Cliente()
        {
            ;
        }

        //metodo que prueba la conexion
        public int Inicializar()
        {
            try
            {
                //levanta al objeto remoto
                RemotingConfiguration.Configure("Client.exe.config", false);
                remoteObject = new RemotableType();
                //llama al metodo del objeto remoto
                Console.WriteLine(remoteObject.metodoRemoto());
                return RemotingErrores.EXITO;
            }
            catch (RemotingException ex)
            {
                Console.WriteLine("Se ha producido el siguiente error: " + ex.Message);
                return RemotingErrores.EXCEPCION_NO_ESPECIFICADA;
            }
            catch (FileNotFoundException ex)
            {
                Console.WriteLine("Se ha producido el siguiente error: " + ex.Message);
                return RemotingErrores.EXCEPCION_NO_ESPECIFICADA;
            }
            catch (WebException ex)
            {
                Console.WriteLine("Se ha producido el siguiente error: " + ex.Message);
                return RemotingErrores.SERVIDOR_NO_ENCONTRADO;
            }
        }

        //metodo que envia los datos al servidor
        public int EnviarMensaje(BitArray mensaje)
        {
            try
            {
                remoteObject = new RemotableType();
                //llama al metodo del RecibirMensaje
                Console.WriteLine(remoteObject.RecibirMensaje(mensaje));
                return RemotingErrores.EXITO;
            }
            catch (RemotingException ex)
            {
                Console.WriteLine("Se ha producido el siguiente error: " + ex.Message);
                return RemotingErrores.EXCEPCION_NO_ESPECIFICADA;
            }
            catch (FileNotFoundException ex)
            {
                Console.WriteLine("Se ha producido el siguiente error: " + ex.Message);
                return RemotingErrores.EXCEPCION_NO_ESPECIFICADA;
            }
            catch (WebException ex)
            {
                Console.WriteLine("Se ha producido el siguiente error: " + ex.Message);
                return RemotingErrores.SERVIDOR_NO_ENCONTRADO;
            }
        }

    }
}
